1. Technical Field
The present subject matter generally relates to selectively disabling one or more input and/or output devices coupled to a host electronic system (e.g., a computer or consumer electronic device). More particularly, the subject matter relates to disabling input/output (“I/O”) devices during at least a portion of an initialization process.
2. Background
Consumer electronic devices have become increasing complex. At least some consumer electronic devices incorporate personal computer (“PC”) based host systems, thus taking advantage of existing, relatively low-cost hardware and software. Such consumer electronic devices, though perhaps tailored for their specific application, still generally operate in much the same manner as a general purpose PC, such as that used by most people in their homes and businesses. The level of diversification that has resulted from the widespread use of PC-based host systems in consumer electronic devices has resulted in various security-related shortcomings. An example of at least one security issue is provided below.
PC-based host systems generally include a central-processing unit (“CPU”) for processing data, random-access memory (“RAM”) used to load and run software and store data, and read-only memory (“ROM”) used to store a set of permanent, non-alterable programs, referred to as the Basic Input and Output System (“BIOS”) software. The BIOS software generally provides a series of low-level programs that allow other programs to access any of the devices within or coupled to the host system. The BIOS software generally also has a series of programs that take care of initializing the host system's hardware, and of performing basic testing to make sure that all the hardware is functioning correctly during, for example, the initialization process. The initialization programs within the BIOS software execute automatically whenever the host system is manually reset or powered on. Once these programs have initialized the host system into a known state, the test programs within the BIOS software are automatically run. The test programs within the BIOS software perform what is known as a Power-On Self-Test (“POST”) to test various hardware components within, or otherwise coupled to, the system. If the POST programs detect a failure of any hardware component, the user is generally given the option to proceed despite the failure, or to halt the system completely in order to fix the problem.
Once the POST programs successfully complete testing of the hardware, control is passed to a program commonly referred to as the boot loader software, which is generally loaded into RAM for execution by the CPU from a hard disk, floppy, CD-ROM, or other similar media. The boot loader software then generally loads and begins to run the operating system software installed on the host system. Once the operating system software is running on the host system, any number of system software programs can be run to provide additional security restrictions that can limit the user's access to the host system, or to any content stored on, or made available by, the host system. Such content can include movies, music, e-books, or other similar material that the vendor of the host system may have an obligation to protect. The process thus described, beginning with a manual reset or power-up event (“H/W reset”), and ending with all operating system software and additional system software running, is what is generally referred to as the “boot process,” or more broadly as the “initialization process.”
Between the initial H/W reset and completion of the initialization process on the host system, there are points where both the BIOS software and the boot loader software generally allow for interruption by a user during one or more interruption windows. The BIOS software generally allows interruption by pressing a single key (e.g., function key 10) or a key sequence (e.g., Ctrl-Alt-Esc simultaneously). Generally, if the key or key sequence is detected by the BIOS software during a short delay period (usually just a few seconds) before the boot loader software is loaded and executed, another set of BIOS software programs are executed, known as the setup programs.
The setup programs within the BIOS software allow a user to alter the basic configuration of a host system, such as, for example, which device to search to locate and load the operating system software. By changing the boot sequence configuration, for example, a user can boot the host system using alternate operating system software from another disk (such as a CD-ROM). This can allow a user to alter the configuration of the vendor-provided operating system software installed on the host system, disable system software installed by the vendor, or even install a user's own software on the host system to bypass the security measures that normally are active on the booted host system. These changes would then go into effect the next time the system was booted.
Boot loader software programs also generally have the same security issues. These programs also generally allow for a user to interrupt the normal boot sequence by pressing a key or key sequence after the boot loader software has started running, but before the operating system software has been loaded. This generally gives the user the option of booting up under one of several versions or modes of the operating system software. Some of these versions or modes can give the user unrestricted access to the host system, since several of these versions or modes (e.g., safe mode under Microsoft Windows) will not start up the vendor's system software. This also can allow a user to make many of the same types of modifications to the vendor-installed operating system software as when using the BIOS software setup programs, but without the need to use alternate operating system software as described above.